package demo01;

import java.io.FileNotFoundException;

/*
 *  finally代码块
 *  使用格式：
 *      try {
 *          // 可能存在异常的代码块
 *      } catch (异常类名1 e) {
 *          // 处理异常1的代码块
 *      } catch (异常类名2 e) {
 *          // 处理异常2的代码块
 *      } ... catch (异常类名n e) {
 *          // 处理异常n的代码块
 *      } finally {
 *          // 无论是否出现异常，都会执行的代码块
 *      }
 *  注意事项：
 *      1. finally不能单独使用，必须和try一起使用
 *      2. finally一般用于资源释放（资源回收），无论程序是否出现异常，最后资源都要释放（比如IO流）
 */
public class Demo07TryCatchFinally {
    public static void main(String[] args) {
        try { // 可能产生异常的代码
            readFile("c:\\a.txt");
        } catch (FileNotFoundException e) { // 异常的处理逻辑
            e.printStackTrace();
        } finally { // 无论异常是否出现，finally代码块内的语句都会执行
            System.out.println("资源释放");
        }
    }

    private static void readFile(String filename) throws FileNotFoundException {
        if (!(filename.charAt(0) == 'c' || filename.charAt(0) == 'C')) {
            throw new FileNotFoundException("文件路径不在c盘，请传递c盘下的文件");
        }
    }
}
